﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DECOR.DL.DALC.SAPC.Proxy;
using CROSLAND.BL.BE;
using System.Data;

namespace CROSLAND.DL.DALC.SAPC
{
    public class CentroDALC : ICentroDALC
    {
       public static CentroDALC Instance() {
            if (_instance == null)
            {
                lock (typeof(CentroDALC))
                {
                    if (_instance == null)
                    {
                        _instance = new CentroDALC();
                    }
                }
            }
            return _instance;
        }

       private CentroDALC() { }
       private static volatile CentroDALC _instance = null;      
   
        #region ICentroDALC Members

        /// <summary>
        /// Devuelve una lista de centros de acuerdo al material y a la organización de ventas.
        /// </summary>
        /// <param name="pCodMaterial">Objeto que contiene el código de material.</param>
        /// <param name="pOrgVentas">Código de la organización de ventas.</param>
        public List<GenericBE> listar(string pCodMaterial, string pOrgVentas)
        {
            CentrosProxy proxy = new CentrosProxy();
            proxy.Connection = DALC.getConnection;
            if (!proxy.Connection.IsOpen) { proxy.Connection.Open(); }
            /* llamando a la función */
            string ex_result = "";
            T001WTable tblResult = new T001WTable();
            
            proxy.Zweb_Lista_Centros(pCodMaterial, pOrgVentas, out ex_result, ref tblResult);
            SAP.Connector.SAPConnectionPool.ReturnConnection(proxy.Connection);
            proxy.Connection = null;
            /* Manejando el retorno */
            DataTable dt = tblResult.ToADODataTable();

            List<GenericBE> listaResult = new List<GenericBE>();
            foreach (DataRow dr in dt.Rows)
            {
                GenericBE obj = new GenericBE();
                obj.Codigo = dr["WERKS"].ToString();
                obj.Descripcion = dr["WERKS"].ToString() + " :: " + dr["NAME1"].ToString();
                listaResult.Add(obj);
            }
            return listaResult;
        }

        #endregion
    }
}
